Digital watermarking is a process for modifying physical or electronic media to embed a hidden machine-readable code into the media. The media may be modified such that the embedded code is imperceptible or nearly imperceptible to the user, yet may be detected through an automated detection process. Most commonly, digital watermarking is applied to media signals such as images, audio signals, and video signals. However, it may also be applied to other types of media objects, including documents (e.g., through line, word or character shifting), software, multi-dimensional graphics models, and surface textures of objects.
Digital watermarking systems typically have two primary components: an encoder that embeds the hidden watermark in a host media signal, and a decoder that detects and reads the embedded watermark from a signal suspected of containing a watermark (a suspect signal). The encoder embeds a watermark by altering the host media signal such that the alterations are substantially imperceptible to viewers or listeners of the rendered signal, yet machine readable. The reading component analyzes a suspect signal to detect whether a watermark is present. In applications where the watermark encodes information, such as a multi-symbol message, the reader extracts this information from the detected watermark.
Several particular watermarking techniques have been developed. The reader is presumed to be familiar with the literature in this field. Particular techniques for embedding and detecting imperceptible watermarks in media signals are detailed in the assignee's U.S. Pat. Nos. 6,614,914, 6,590,996 and 6,122,403, which are hereby incorporated by reference.
Decoding a digital watermark from an image can be a computationally complex process, particularly when the watermark is designed to survive geometric distortions and distortions due to printing and image capture through an image capture device. The computational complexity of the decoding process makes it a challenge to implement the decoding process efficiently on hand held computing devices, such as Personal Digital Assistants (PDAs) and cell phones.
This same challenge arises for decoding audio watermarks from an audio stream, particularly a digitized version of audio captured from ambient audio through a microphone. It also arises for decoding video watermarks from a video stream.
This document describes a method of progressively decoding a digital watermark on a distributed computing platform. The distributed nature of the decoding process enables the computations of a decoding operation to be distributed to two or more devices, such as a client device and a server computer. The progressive nature of the decoding process reduces bandwidth and computation requirements because it progressively passes more detailed image data as necessary to perform an accurate reading operation of the embedded watermark.
In one implementation, a client device equipped with a digital camera, such as a PDA or cell phone, captures a digital image of a watermarked object, and pre-filters the image to isolate a portion of the image data suspected of containing a digital watermark. The pre-filter de-correlates a portion of the image data suspected of containing a digital watermark from the remaining host image signal using a predictive filter. The client then quantizes the filtered data and progressively transmits the quantized data to a watermark decoder.
The progressive transmitter sends image data as necessary to achieve a valid decoding operation. To reduce bandwidth requirements, the transmitter starts with the most highly quantized version of the filtered image, and sends lesser quantized versions until the watermark decoder completes a successful decoding operation.
As it receives the quantized image data, the watermark decoder buffers it until it receives enough to perform a decoding operation. It provides feedback to the progressive transmitter about the results of the decoding operations to regulate the transfer of image data. For example, if a watermark is not detected in highly quantized data, it signals the transmitter to send more detailed image data. Or, alternatively, if the decoder concludes that it is unlikely to be able to extract the watermark message, it may signal the transmitter to send image data from a subsequent frame.
Once decoding is complete, the watermark decoder initiates an action associated with the decoded watermark message. This action may include using the watermark message to look up data or program instructions to forward to the client or another server.
Further features will become apparent with reference to the following detailed description and accompanying drawings.